package com.tarena.lbs.business.servcie;

import com.tarena.lbs.base.protocol.exception.BusinessException;
import com.tarena.lbs.base.protocol.pager.PageResult;
import com.tarena.lbs.business.pojo.param.StoreParam;
import com.tarena.lbs.business.pojo.param.UserLocationParam;
import com.tarena.lbs.business.pojo.query.AreaStoreQuery;
import com.tarena.lbs.business.pojo.query.StoreChainQuery;
import com.tarena.lbs.business.pojo.query.StoreQuery;
import com.tarena.lbs.business.pojo.vo.StoreChainVO;
import com.tarena.lbs.business.pojo.vo.StoreVO;


public interface StoreService {


    void saveStore(StoreParam param) throws BusinessException;

    PageResult<StoreVO> pageList(StoreQuery query) throws BusinessException;

    PageResult<StoreVO> getStoreByCity(AreaStoreQuery query) throws BusinessException;

    void enable(Integer id);

    StoreVO selectByStoreId(Integer id);

    void delete(Integer id);

    /**
     * 根据用户经纬度查询5km范围内的店铺
     * @param param 用户位置参数
     * @return 附近店铺列表
     * @throws BusinessException 业务异常
     */
    void location(UserLocationParam param) throws BusinessException;

    PageResult<StoreChainVO> pageList(StoreChainQuery query) throws BusinessException;
}